23

» WarCraft 3 / Проблема с магазином.

Похожие вопросы:

ответ
в чем редактор вкв3 отличается от редактора ск2 - к сожалению, в вк3-шном эдиторе не удастся отловить все данные.
если ты скажешь, что конкретно делает твой спелл, тебе могут подсказать более легкий вариант исполнения
насчет спецэффектов - утечка решается просто
  1. создаешь точку, если спец на земле. если спец на юните, точка не требуется.
  2. собсно воспроизводишь спец
  3. и сразу его удаляешь. спец удалится тогда, когда доиграет до конца его анимация
  4. кастом скриптом удаляешь точку, если 1 часть 1 пункта актуальна
ответ
Steal nerves:
мб нужно сменить ид приказ у абилки
ответ
ApoloZ2, вот пример проверки в какой именно магазин продали предмет. В условиях ставишь необходимые типы предметов которые можно продать. Вместо "Продано!" вставляешь уже свои действия.
ответ
Все предметы изночально принадлежать враждебным, юзайте Custom value предмета, если 0 то предмет еще никто не подобрал, значит его получили убив монстра или купили, значит ставим ему custom value с номером игрока (нумеруйте не с 0, а с 1). Легко и просто, правда?

23

» WarCraft 3 / Команда Wait

Похожие вопросы:

ответ
Сама функция TriggerSleepAction (Wait) не вызывает утечек, но багнута и при использовании в качестве задержек может способствовать утечкам, поэтому никаких вейтов в спеллах и всяких респаунах - только таймеры, вейты нужны для синхронизации данных и роликов и точка!

23

» WarCraft 3 / Несколько целей атаки

Похожие вопросы:

ответ
это способность ракеты у альянса способности войска
там вроде даже можно отследить какие именно цели получили урон,при событии юнит получает урон.
ответ
Пункт " убить боевую единицу" отвечает за то сможет ли урон от яда убить Юнита, если флаг не установлен то у Юнита останется 1-2 хп. Но яд не может его убить.
Разумеется не работают яд. Стрелы на маг иммунитет, ибо это активный автокаст.
Чтобы автокаст стрелы работали на маг. Имун нужно чтобы способность относилась к герою, требуемый для изучения уровень был выше 1. Вот и все.
ответ
Filius Dei:
да есть такая способность пассивка, у альянса называется ракеты, из юнитов её использует самоходная мортира, изменяя модели атаки коль-во целей и дальность можешь заставить юнита или здание стрелять сразу по многим врагам, но 1 снаряд 1 враг не будет такого что бы 5 стрел и все в одного, зато допустим пришло 6 врагов а атакует сразу 3-ех можно,(можно и хоть 100 врагов атаковать, ну 100 предел) только учти стрелы разлетаются во все стороны на 360, удобно хотя иногда выглядит странно когда один лучник шмалит всех вокруг))
ответ
  1. вампиризмы работают лишь на основную атаку, не затрагивая модификаторы.
  2. не думаю, москиты не дружат с всякими проверками - подошел ли юнит к юниту или нет, просто давай неуяз, да и вовсе нафига тогда рабочие с ратушой? Так золото слабо дать или заставить даммиков проигрывать анимацию таскания мешков работникам.
  3. Еще раз, все модификаторы уроны, промахи, хреномахи рассчитываются в момент замаха, до успешного завершения атаки. Потом уже неважно, можно удалить юнита и снаряд достигнет цели (ну если ничего не помешает вроде промаха) и нанесет урон.

23

» WarCraft 3 / AddSpecialEffectTarget

Похожие вопросы:

ответ
Проблема решена, причина была в моей криворукости.
ответ
function IsAbilityOnCooldown takes integer a returns boolean
	return IsFlagBitSet(RMem(a+0x20),512)
endfunction

function StartAbilityCooldownFxByAddress takes integer pAbility, real cd returns boolean
	if pAbility < 1 then
		return false
	endif
	set Memory[pReserverdIntArg1 / 4] = mR2I(cd)
	call CallThisCallWith2Args( RMem(RMem(pAbility)+0x3A4) , pAbility, pReserverdIntArg1 )//pStartAbilityCD
	return IsAbilityOnCooldown( pAbility )
endfunction

function StartAbilityCooldownFx takes unit whichUnit, integer abilityId, real cd returns boolean
	local integer pAbility = 0
	if GetUnitAbilityLevel( whichUnit, abilityId  ) == 0 or cd == 0.00  then
		return false
	endif
	return StartAbilityCooldownFxByAddress(GetUnitAbility(whichUnit, abilityId),cd)
endfunction
ответ
Все.
Проблема была НЕ в коде.
Код абилы вообще выключен, но после игры с ней фаталит. Просто за активацию дефолтной абилы.
Проблема в РО. ФАТАЛ ПОСЛЕ ИГРЫ ВЫЗЫВАЕТ НАСТРОЙКА АБИЛЫ В РО.
Для меня это звучит как "девочка с бородой" - в принципе возможно, но довольно удивительно, поэтому сразу в голову и не пришло.
Че-то нашаманено, ща перераспакую архив с "чистыми" картами и буду разбираться, что. Но т. к. эта абила пастилась на основе другой, сделанной на основе replenishlife, а там фатала не наблюдалось - разберусь.
///////////////////
Ну или другой вариант еще остался - РО в принципе настолько раздут до опупения, что любая дефолтная абила, созданная после момента X, начинает фаталить, если часто юзать ее в игре.
Но это крайне сомнительно, ибо:
  1. Довольно бредово;
  2. Первая из двух фаталящих абил на основе replenishlife была создана ДО трех последующих за ней абил у своего героя.
ответ
Steal nerves:
PT153:
Вспомнил про один баг. Есть сделать PauseTimer() на периодический таймер, а потом на этой таймер использовать ResumeTimer(), то таймер повторит свой цикл лишь раз, а потом остановится.
сам не пользуюсь ResumeTimer, но щас проверил, действительно не работает что-то. Видимо, это работает только тогда, когда таймер не до конца дошел.
можно обойтись и без ResumeTimer
понимаю, ты хочешь сделать какое-то ограничение после возвращения урона. Спустя 3 секунды возвратка может снова возвращать урон.
Можно было сделать по-другому.
Еще не понимаю, зачем нам нужен периодический таймер.
  1. можем логическую переменную b завести и таймер t
  2. нанес противник урон = проверяем логическую переменную, если истина, запускаем одноразовый таймер, и ставим ложь в логической переменной = false
if b then 
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.?mdl",u,"origin"))
call UnitDamageTarget(udg_u,u,r*5,false, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNIVERSAL, WEAPON_TYPE_WHOKNOWS)
call BJDebugMsg("Reflected:"+R2S(r*5))
call TimerStart(udg_t,0.5,false,function t3a)
set b = false
endif
  1. когда таймер запустится
function t3a takes nothing returns nothing
    call PauseTimer(udg_t)
    set b = true
endfunction
думаю все что надо это call ResumeTimer() заменить на call TimerStart()

23

» WarCraft 3 / Способность

Похожие вопросы:

ответ
Когда юнит проучивает пассивку, добавляй в группу юнита, который выучил пассивку. Дальше все просто -
Юнит умирает
Киллинг юнит в нашей группе - да
Дайинг юнит не в команде владельца киллинг юнит.
Игрок - адд проперти - 500 золото (овнер оф киллинг юнит)
ответ
скорее всего, он говорит о SetUnitMovespeed ()
ответ
Сделай на основе берсерка и кидай сетку через созданного в позиции кастера даммика (невидимого юнита), даммика потом убираешь
ответ
На JASS-е есть функция GetLearnedSkill(), которая выдает rawcode выученного умения. Создаешь переменную типа "целочисленная" с названием SkillCode, потом в начале действий триггера пишешь через Custom Script что-то типо этого:
set udg_SkillCode=GetLearnedSkill()
и затем делаешь какие тебе там нужны сравнения на переменную SkillCode.
ответ
XGM Bot:
Похожие вопросы:

ответ
ИИ написать, сами скиллы юзают тока крипы подконтрольные ИИ - к примеру нейтральновраждебные.
Так же можно юзать скилл - Сфера замедления, это орб эффект который срабатывая накладывает на цель атаки указанный в его настройках скилл, подойдет для карт типа Castle Fight.
ответ
ИИ чтоли не кастует? Сделай триггерный каст, Событие - юнит обнаружил цель в пределах досягаемости, проглотить не в кулдауне и цель неуязвимый враг, пойти и проглотить юнита...
ответ
Fireproof, попробуй в РО у юнита поменять "Графика - Анимация - обратный ход броска" и "Графика - Анимация - точка броска" на 0. Правда, это уберёт время каста для всех умений у этого юнита.
ответ
Ну тебе нужно чтобы был прямо таки бафф который можно рассеивать?
Для начала сделай способность, и баф на основе какой нибудь пустышки, подойдет ярость у некромантов, так же переодический триггер который раз в пол секунды проверяет всех юнитов в группе, есть ли у них бафф если юнит мертв или у него нет баффа, то у юнита удаляется способность на доп урон зданиям и сам унит удаляется из группы.
При касте твоим шаманов заклинания на цель, ты добавляешь цель заклинания в группу, которую и перебирает описанный выше триггер.
Надеюсь понятно?
ответ
datar1231, Именно поэтому говорят не делать 2 две способности от друга потому когда юнита приходит приказ на использование способности он использует твою нестандартную способность но основываясь на айди стандартной способности или делай на основе другой или незанаю подействует ли канал.


23

» WarCraft 3 / Wait в циклах

Похожие вопросы:

ответ
cs: set udg_e[DorLoopIntegerA - 1] = AddSpecialEffectLoc ( PolarProjectionBJ( GetUnitLoc(GetTriggerUnit(), 250, i ), "Abilities\\Spells\\Human\\FlameStrike\\FlameStrike1.mdl")
udg_e - глобальная переменная. Массив типа эффект.

А вообще, изучаем основы программирования. Глава II - массивы.
ответ
Нет. Я пока хочу достроить карту на GUI, думаю мне осталось дней 10-30 работать, а буду ли следующую делать - под вопросом. Не хочется тратить время на изучение jass из-за пустяка! Однако Я использовал Custom Script, но это было содрано с одного сайта, а вот чтобы делать самому нужно сначала полностью изучить язык. Либо знаю, либо нет, чуть-чуть не считается!
Что касается wait, то если не это то что тогда?
Опытным путём сам установил что в процесс ничего не вклинивается. Можно использовать Триггер как Функцию и ссылаться на него в другом Триггере. По сути, это и есть функция, если глянуть на jass. Вопрос закрыт.

23

» WarCraft 3 / как сделать щит?

Похожие вопросы:

ответ
А что мешает заставлять юнит юзать манащит, при изучении, воскрешении и деактивации?
ответ
Можно сделать на основе заклинания Жар Преисподней, но без триггеров тут не обойтись.
ответ
Тимур:
Через способность "панцирь с шипами".
Не панцирь с шипами, а доспехи горного великана (Каменные доспехи), но только если требуется заблокировать физический урон.
Для блокировки любого типа урона потребуется триггер срабатывающий на нанесение урона, и последующее лечение, чтобы изобразить блокировку урона.
ответ
на определение сзади ли юнит есть функция
function IsUnitBack takes unit uF, unit uWhichBack returns boolean
        real r1 = bj_RADTODEG * Atan2(GetUnitY(uWhichBack) - GetUnitY(uF), GetUnitX(uWhichBack) - GetUnitX(uF)) + 360.
        real r2 = GetUnitFacing(uWhichBack) + 360.
           if GetUnitY(uWhichBack) < GetUnitY(uF) then
               set r1 = r1 + 360.
           endif
        return (r1<=(r2+45.) and r1>=(r2-45.))
    endfunction
ответ
Берешь способность на базе авиабомб или еще какой-нибудь пустышки, потом устанавливаешь систему детекта урона, к ней прикручиваешь свой триггер, который проверяет наличие способности, отнимает ману, добавляет способность на +100500 хп, запускает таймер на 0.00 секунд с повешенной на него через хеш информацией о нанесенном уроне, и после срабатывания таймера возвращает отнятые хп и удаляет +100500 хп способность.

23

» WarCraft 3 / Сброс перезарядки предмета.

Похожие вопросы:

ответ
Gerhop, если у игрока лишь 1 герой то можно сразу дать этот скилл
при подборе предмета разрешать его а при выпадении запрещать
тогда вроде кд будет сохранятся
если мне память не изменяет

23

» WarCraft 3 / Переменная

Похожие вопросы:

ответ
Что такое "назначить пользовательский параметр юнита или предмета" и как им пользоваться?
Используется для сохранения каких-нибудь своих данных в этот конкретный предмет или юнита
Добрые люди, как присвоить глобальной переменной (целочисленной) цену определенного предмета (так чтобы если изменить цену в редакторе объектов, то в редакторе триггеров она сама изменялась) или какая главная характеристика определенного героя (разум, сила, ловкость).
Никак, только руками указывать или использовать это xgm.guru/p/fly-data
ответ
globals
	string  array  str
endglobals

set  str[ 0 ]  =  "H"
set  str[ 1 ]  =  "E"
set  str[ 2 ]  =  "L"
set  str[ 3 ]  =  "L"
set  str[ 4 ]  =  "O"

call BJDebugMsg( str[ 0 ] + str[ 1 ] + str[ 2 ] + str[ 3 ] + str[ 4 ] )
ответ
Пушистый, я пытаюсь локальной переменной присвоить значение глобальной переменной типа Способность и пишет: Cannot convert integer to ability
local ability s
set udg_BuferAbility=GetSpellAbilityId()
set s=udg_BuferAbility
ответ
Глянул... код (?)
Такого слепка из говна я давненько не видел
Ну, во-первых, у тебя нет инстанса abilitylist, то есть:
AbilityList abilitylist = abilitylist .create()
Во-вторых :
static thistype newAbility()
{
  thistype this = allocate()
  ..
  пишете свою ерунду
  ..
  return this
}
А в третьих почему у в абилитилисте вместо 1 массива из структур абилити со всеми вытекающими параметрами есть по массиву на каждый параметр?
Написал про код с целью вам сказать, что нужно работать над собой, почитать про списки в языках программирования, а потом уже лепить один вариант

23

» WarCraft 3 / Как вращать юнита вокруг точки?

Похожие вопросы:

ответ
Может, поставить нулевую скорость в редакторе объектов?
Или не нулевую, но триггерно каждые 0.03 с. задавать ему координаты, на которых он изначально поставлен.

23

» WarCraft 3 / Рав коды

Похожие вопросы:

ответ
Сделай на основе берсерка и кидай сетку через созданного в позиции кастера даммика (невидимого юнита), даммика потом убираешь

23

» WarCraft 3 / Взаимосвязь.

Похожие вопросы:

ответ
Вам сюда, господин хороший. Там есть ответы, практически, на все ваши вопросы.
ответ
BlackCascade:
Обьясните связь, почему построенный обьект не удаляется в след триггере
Потому, что в следующем триггере ты пытаешься обратиться к построенному объекту с помощью функции "Реакция на событие - Constructed Structure". Но эта функция не вернёт юнит, т.к. она возвращает юнит только когда событием была постройка здания. У тебя же событие "Боевая единица - Unit Enters Region" и в нём не происходит постройка здания. В нём происходит вход в регион и оно возвращает уже юнит, вошедший в регион, а никак не построенное здание.
разобраться бы во всем этом еще.
Когда юнит завершает строительство, игра сохраняет построенно здание в переменную UnitOfDeath[RectOfDeathLength], назначает новому триггеру новое событие, что в область вокруг построенного здания вошёл юнит. Эту область игра сохраняет в переменной RectOfDeath[RectOfDeathLength]. Когда событие срабатывает, цикл проверяет, в какой из этих областей находится вошедший юнит и удаляет здание, которое было связано с этой областью переменной UnitOfDeath[RectOfDeathLength].
ответ
решил проблему костылём - дал возможность рабочему строить только башню - шаблонку, которая в свою очередь может улучшаться в две указанные башни. Взаимосвязь поставить только от башни - шаблонки. Лимит поставил на башню шаблонки.
Но тема не закрыта. Хотелось бы узнать можно ли решить проблему без костылей.
ответ
Дело именно в количестве триггеров а не в их начинки и назначении, создавать триггеры динамически по мере надобности в гуях нельзя, так что переходите на jass.
ответ
Возможно, упустил то, что в игре прибиты гвоздями 4 расы и изменение визуальных файлов никак не меняет игровой код?

23

» WarCraft 3 / Пассивка

Похожие вопросы:

ответ
Опен дота в помощь, тупо добавление пассивки на скорость атаки при каждом ударе, потом если юнит бьет другую цель, то удаляем половину бонуса.
ответ
У пассивок кроме креста перерождения и эксгумации труповозки нет кулдауна, ну совсем нет! Так что берем перерождение и рисуем на нем кулдаун мемхаком, а чем эффект крита или блока изображаем триггерно ну или вручаем, удаляем эти пассивки в заблочннном спелбуке юниту.
ответ
Если абуза боишься, можно просто поставить, что пассивка не действует чаще, например, раза в 0.5 секунды (таймером вешаешь на юнита "что-то" - абилу-маркер, хэш-значение и т. д., после окончания таймера убираешь, а в условиях - если у юнита это "что-то" есть, то пассивка не канает)
ответ
еще раз - нет! дефольтные способности вы не отследите, только полностью триггерный аналог, баши и криты сделанные триггерно лежать вот тут
Простенько, на jass но для начала сойдет.
ответ
quq_CCCP:
KaneThaumaturge, эмм а как насчет не делать такие пассивки? Детект физического урона вещь довольно сложная, а еще и если нужно для множества юнитов весьма ресурсоёмкая, желательно все сделать по шустрее, без лишний или тяжелых действий.
Готовые системы этого дела есть, но они на jass и требуют еще и понимания как они работают, так что если у вас нет этого понимания и желания понимать это - то мб не надо?
А если делать через
Событие: Юнит х атакован
Условие: На ваш извращенный вкус
Действие -
Атакуемый юнит=z
добавить к триггеру у событие "юнит получает урон"
В чём фишка? Через такую схему можно задать в событии, что именно z получает урон.
Так же следует не забывать вставлять в условие кто у нас Damage source
Понимаю, что коряво, криво, кособоко, не без багов, но для одного героя вполне работает
KaneThaumaturge:
Extremator, Есть идея: Когда юнит атакует ставить L(логическая) - да. Потом отслеживать его приказы, и если он что-то приказал, то ставить его L=нет. С этим парарелельно запускать таймер, который равен времени его замаха. Ну и по окончанию таймера проверять логическую да или нет и уже делать действия.
Ага, а как модификаторы ускорения атаки отслеживать будешь? Или юнита под блудластом?

23

» WarCraft 3 / Отряд

Похожие вопросы:

ответ
  • Выбираешь всех целевых юнитов в группу.
  • Создаёшь дамми.
  • Используя ForGroup и GetEnumUnit, применить на каждого юнита в группе заклинание.
  • Очищаешь групппу.
  • Удаляешь группу.
  • Удаляешь дамми.

У дамми-юнита должны стоять настройки анимации, позволяющие применять способности без задержек, у способности не должно быть кулдауна.
ответ
~8gabriel8:
bOrissko, у тебя вроде как ссылалось всегда на Паладина, так как он Hero [1], будь-то владелец юнита, либо реплика от юнита. Точно уже запамятовал, так как шустро всё переделал. У меня нет желания тратить время на проверку триггера, когда указан Tiggering unit/Переключающий юнит, потому стараюсь всегда указывать точно к ситуации, в данном случае переделал так, что диалог срабатывает при приближении героя на расстояние не более 256 к капитану. Указал везде Entering unit/Не знаю как будет в русских триггерах, наверное, Вошедший или Входящий юнит. Вместо паузы для героя поставил приказ Стоп, хотя это, наверное, неправильно я сделал, так как он погонится во время диалога за приблизившимися врагами. Пожалуй, лучше верни герою паузу вместо Стоп, а также добавь неуязвимость до распаузы.
По поводу диалогов, мне рассказал автор кампании Эфирия, в создании которой участвую, что оптимальной длительностью диалогов является 5 секунд на строчку, если строка не полная, то прикидываешь, на сколько из 5 секунд она тянет. В самой первой фразе в диалоге лучше прибавлять секунду, так как мозг не сразу переключается с игры на диалог, и его начальная реплика зачастую кажется быстрой. Например, у тебя первая фраза "Привет!", это одна секунда, но так как она первая, то я поставил две. Следующая фраза тянет на 4 секунды, так и поставил.
Чтобы прикинуть расстояние до юнита, необходимо пользоваться сеткой:
Сетка в редакторе (кнопка G):
большой квадрат = 512х512
средний квадрат = 128х128
малый квадрат = 32х32
Считается расстояние от центра юнита, а не крайних точек модели. У тебя было 150, но мне показалось, что это мало, ведь подходить надо очень близко, потому поставил 256.
ответ
XGM Bot:
Похожие вопросы:

ответ
Частично не понял, тоесть нужно что бы в кинематике был несуществующий юнит?
Допустим в окне кинематики паладин с каким либо именем что то говорит, но на карте его нет. Если да то это Спецэффекты - Transmission From Unit-Type
ответ
А касательно остальной части, если UnitUserData нигде не используется, создаешь массив юнитов и отрядов. Массив юнитов забиваешь своими капитанами. В UnitUserData капитана пихаешь его порядковый номер в массиве. Создаешь группу юнитов для этого капитана.
  1. Добавление через каст способности.
Я бы делал через 2 разные абилки с одной и той же позицией в интерфейсе. Пока нужный тебе юнит не является частью отряда - у него таргетная абилка при касте которой на капитана он добавляется в группу соответствующего капитана и получает 2ю абилку взамен первой.
Касательно выделения этих пехотинцев - можно намутить что-то с передачей контроля или создать триггер, который будет снимать выделение с юнитов у которых есть 2я абилка. Если ты хочешь чтобы по одиночке можно было выделять пехотинцев - можешь создать переменную для каждого игрока с капитанами, куда будет просто записываться последний выбранный юнит. При снятии выделения - проверять не выбран ли этот же юнит, в случае чего не снимать выделение. Правда не уверен будет ли корректно работать :> В крайнем случае - будет работать в три клика вместо двух. Если я не ошибаюсь.
Касательно поведения этих пехотинцев - что-то реально стоящее сделать сложно. Возможно, но мне не с руки все расписывать :> Простейший вариант - приказывать пехотинцам после добавления в группу следовать за капитаном.
  1. Добавление через атаку капитана
Триггер, проверяющий что капитан получил урон или атакован, как угодно. Далее любым способом проверяешь есть ли в группе этого капитана юниты. Если нет - выбираешь всех пехотинцев N радиусе, добавляешь в отряд, заменяешь абилку/либо просто приказываешь кастануть в капитана первую абилку.
ответ
Ну только триггерные системы отрядов, была такая...
Вот пример ссылочка
Были и другие, поиск в помощь.
Вот еще ссылка
ответ
запомнить всех выбранных, затем очистить эту группу, добавить сначала твоего героя, а затем всех остальных
ответ
  • Выбираешь всех целевых юнитов в группу.
  • Создаёшь дамми.
  • Используя ForGroup и GetEnumUnit, применить на каждого юнита в группе заклинание.
  • Очищаешь групппу.
  • Удаляешь группу.
  • Удаляешь дамми.

У дамми-юнита должны стоять настройки анимации, позволяющие применять способности без задержек, у способности не должно быть кулдауна.

ответ
на каждый снаряд делаешь группу, в нее заносишь всех кто был поражен
done

23

» WarCraft 3 / Пара вопросов

Похожие вопросы:

ответ
Я не знаю, сработает ли это на практике, но теоретически - должно.
Нужно сделать первой главой в доп. кампании пустую карту, где будет только 2 действия - запуск ролика и сразу победа, без экрана статистики и диалогового окна. Как именно запускать ролик после победы - см. в обычных кампаниях. В RoC все 4 финальных ролика в кампаниях так запускаются при помощи этого действия.
А "пробел" между миссиями в доп. кампании, насколько я знаю, сделать невозможно. В обычных кампаниях за это отвечает файл UI\CampaignStrings.txt или UI\CampaignStrings_exp.txt. Если найдешь его аналог в файлах доп. кампании - попробуй изменить сроку со второй главой на:
Mission1=""
Совсем не факт, что там этот файл есть, и не факт, что этот способ будет работать - но попробовать можно. Тогда нужны будут 2 кнопки для 2й главы - "пробел" и "нормальная", которые нужно будет скрывать и открывать по мере прохождения.
ответ
  1. можно только модель героя, которая будет прикреплена в качестве спецэффекта к дамми юниту с особыми анимациями.
  2. Удалить и добавить снова, или юзнуть книгу забвения (учитывая что это руна это совсем изи) а затем приказать герою выучить все скиллы кроме нужного тебе, ну или как то иначе.
ответ
RikLine:
Sergarr:
Со вторым - можно легко уменьшить хп всех юнитов одной стороны с помощью функции Set Handicap из ГУИ.
Да, я понимаю, но другой вопрос: как "дать редактору понять", что один из игроков отсутствует? Какое событие или же условие надо поставить?
Можно просто считать количество играющих игроков. В ГУИ это делается так: создаешь целочисленную переменную и приравниваешь ее значение к Number of players in (All of players matching (((Matching player) slot status) равно Играет)).
Чтобы это дело прикрутить к установке гандикапа, ты создаешь триггер с кучей событий вида Игрок 1 (красный) leaves the game, туда вставляешь эту штуку выше, и затем там же устанавливаешь гандикап.
Да, и еще, эта функция считает всех компьютерных игроков тоже как "играющих", так что на это надо сделать поправку.

23

» WarCraft 3 / Активность

Похожие вопросы:

ответ
в чем вопрос?
ответ
идем читать статьи
ищем фразы - запретить заклинание, спелл бук, триггеры
ответ
Ну вылет у тебя на функции, которая занимается отрисовкой графики. Она универсальная, там и частицы обрабатываются, и поверхности. Так что ошибка явно в модели, а какой и как - хрен его знает
ответ
Steal nerves:
ссылка
не прерывается приказ почти у любой абилы без цели. В большинстве случаев, останавливаются, чтоб заюзать скилл. А потом продолжают делать те действия, которые оборвал. Типа Рев. Есть длительные касты, например: заговор неуязвимости, он остановится, попрыгает (channeling-анимация), и потом дальше будет идти. Или заклинание крови дракончика.
А вот тех, из-за чего еще и не останавливается на ходу, совсем мало
То есть если я поставлю в очередь приказы постройки, а в середине использую эти способности, то очередь прервётся?
можно проверить

23

» WarCraft 3 / Способность

Похожие вопросы:

ответ
Когда юнит проучивает пассивку, добавляй в группу юнита, который выучил пассивку. Дальше все просто -
Юнит умирает
Киллинг юнит в нашей группе - да
Дайинг юнит не в команде владельца киллинг юнит.
Игрок - адд проперти - 500 золото (овнер оф киллинг юнит)
ответ
скорее всего, он говорит о SetUnitMovespeed ()
ответ
Сделай на основе берсерка и кидай сетку через созданного в позиции кастера даммика (невидимого юнита), даммика потом убираешь
ответ
На JASS-е есть функция GetLearnedSkill(), которая выдает rawcode выученного умения. Создаешь переменную типа "целочисленная" с названием SkillCode, потом в начале действий триггера пишешь через Custom Script что-то типо этого:
set udg_SkillCode=GetLearnedSkill()
и затем делаешь какие тебе там нужны сравнения на переменную SkillCode.
ответ
XGM Bot:
Похожие вопросы:

ответ
ИИ написать, сами скиллы юзают тока крипы подконтрольные ИИ - к примеру нейтральновраждебные.
Так же можно юзать скилл - Сфера замедления, это орб эффект который срабатывая накладывает на цель атаки указанный в его настройках скилл, подойдет для карт типа Castle Fight.
ответ
ИИ чтоли не кастует? Сделай триггерный каст, Событие - юнит обнаружил цель в пределах досягаемости, проглотить не в кулдауне и цель неуязвимый враг, пойти и проглотить юнита...
ответ
Fireproof, попробуй в РО у юнита поменять "Графика - Анимация - обратный ход броска" и "Графика - Анимация - точка броска" на 0. Правда, это уберёт время каста для всех умений у этого юнита.
ответ
Ну тебе нужно чтобы был прямо таки бафф который можно рассеивать?
Для начала сделай способность, и баф на основе какой нибудь пустышки, подойдет ярость у некромантов, так же переодический триггер который раз в пол секунды проверяет всех юнитов в группе, есть ли у них бафф если юнит мертв или у него нет баффа, то у юнита удаляется способность на доп урон зданиям и сам унит удаляется из группы.
При касте твоим шаманов заклинания на цель, ты добавляешь цель заклинания в группу, которую и перебирает описанный выше триггер.
Надеюсь понятно?
ответ
datar1231, Именно поэтому говорят не делать 2 две способности от друга потому когда юнита приходит приказ на использование способности он использует твою нестандартную способность но основываясь на айди стандартной способности или делай на основе другой или незанаю подействует ли канал.


23

» WarCraft 3 / Я хз

Похожие вопросы:

ответ
так же смотри наработки на сайте/форуме
ответ
Stalker5500, как ты описал- должно работать.
Только сделай в событие либо только Нейтрально-враждебный умирает, либо Событие- боевая единица умирает, а в условие- Владелец умирающего - Нейтрально-враждебный.
А дальше в действиях есть такая конструкция в разделе Общие параметры if/then/else. Используй ее и будет тебе счастье
ответ
DoctorDoza, xgm.guru/p/wc3/jass_local_vars
я сегодня добрый так что пример напишу
void act(){ // эта функция - действие триггера
	unit attacker=GetAttacker(); // заносим атакующего в локалку
	unit attacked=GetTriggerUnit(); // заносим атакованного в локалку
	IssueTargetOrder( attacker, "thunderbolt",attacked); // приказываем атакующему кастануть молот бурь на атакованного
	TriggerSleepAction(0.5) // ждём 0.5 сек чтобы успел кастануть спел
	IssueTargetOrder( attacker, "attack",attacked); // приказываем атакующему атаковать атакованного 
}
ответ
Можно проще, через UnitPool. Правда у него нету GUI API.
"""
native CreateUnitPool takes nothing returns unitpool
native DestroyUnitPool takes unitpool whichPool returns nothing
native UnitPoolAddUnitType takes unitpool whichPool, integer unitId, real weight returns nothing
native UnitPoolRemoveUnitType takes unitpool whichPool, integer unitId returns nothing
native PlaceRandomUnit takes unitpool whichPool, player forWhichPlayer, real x, real y, real facing returns unit
"""

23

» WarCraft 3 / Хендл

Похожие вопросы:

ответ
В "key" есть функция "Load trigger Handle". Как ей воспользоваться, чтобы допустим получить хэндл начального и последнего триггера?
Так?
ответ
вариант №1 - не нулить переменные, оставляя утечки номеров хендлов. это безопасно, да, если знаешь, что делаешь.
№2 - ловить UNIT_DEATH и чистить за ним
ответ
Проверил, да
ответ
Функции, исполняемые при тиках таймеров не должны принимать параметров. Для передачи данных нужно пользоватся хеш-таблицами.

23

» WarCraft 3 / Jass

Похожие вопросы:

ответ
низнаю какой спел у героя перезаряжается, на какой хватает маны, какие спелы у героя вообще есть, и в прочем на основе каких спелов они сделаны
да здравствует бд
FenikS1991:
Я знаю что это координаты умник.. пустые придирки не прокатят
я не только про координаты, я про всё
короче судя по всему ты пытаешься написать прогу которая бы думала вместо тебя
и это очень пичально
поэтому я просто оставлю это здесь
ответ
Hate, я не исползую сJass
Hate, и к тому же мне не нужен числа а нужен тип по который возврашает из него может несколько
Вот так работает
library text
    struct typeweapon
    endstruct
    
    struct typearmor
    endstruct
    
    function CreateTypeWeapon takes nothing returns typeweapon
        return typeweapon.create()
    endfunction
    
    function CreateTypeArmor takes nothing returns typearmor
        return typearmor.create()
    endfunction
endlibrary
ответ
constant native IsUnitVisible takes unit whichUnit, player whichPlayer returns boolean
в редакторе есть список функций, используйте поиск по нему плес
ответ
FabulousTiger, создаешь 12 х 12 абилок с разными координатами на карте команд, ну или меньше, все завивит от того что требуется и способность на основе Техника ('ANeg') и меняя уровень техники, ты свапаешь абилки и меняешь положение иконки на карте команд на ходу, изи но довольно громоздко.
Так же есть мемхак, но если вы задаёте такие вопросы явно рано о нем думать...

23

» WarCraft 3 / Локальная переменная

Похожие вопросы:

ответ
Нужно определить какого типа переменные должна принимать верхняя функция и вместо
function myfunc_01 takes nothing returns nothing
нужно написать, например:
function myfunc_02 takes [parameter] {type}, [parameter] {type}, [parameter] {type}  returns nothing
Дальше в теле основной функции вызываешь верхнюю функцию и передаёшь в неё параметры:
call myfunc_01([parameter], [parameter], [parameter])

Лучше опиши что конкретно ты хочешь сделать. Если упомянул о хеше.
ответ
массивы или хэш
один фиг
только массивы быстрее
массивы надо знать обязательно
они используются не только в программировании но и в математике и физике
та же хэш таблица построена на основе массива
ответ
Ну так то темповые глобалки и структуры vjass'а юзают уже хрен знает сколько лет, ибо да это побыстрее, тут даже вопрос не в памяти а в том что создание переменной это отельная операция как и обнуления, что ненужно делать с глобалками (их порой даже создавать ненужно, ибо bj глобалки сделали близзард) но нужно действовать осторожно, думать головой, не вызывая иных событий где будут юзатся эти же переменные.
ответ
никогда не используй ForForce
юзай обычный цикл (loop)
в статьях это упоминается 100 раз
да даже сами близы юзают loop в бж событиях

23

» WarCraft 3 / Жизнь и смерть.

Похожие вопросы:

ответ
Сделай размеры всех декораций поменьше
ответ
Юнитов поднимает тогда же, когда и опускает, потому что я удаляю их из DedG[3], но забываю удалить из группы снарядов, таким образом, к тем кто попал под падение, уже навечно задействован акт снарядов(опускание), пока они в DedG[3]
ответ
Не видел карты но вероятно должна помочь статья о мультибордах
Создав целочисленные переменные (для каждого нужного пункта), приращиваем их значения (при убийствах и смертях) и периодически выводим в мультиборд

23

» WarCraft 3 / Как возродить созданного юнита?

Похожие вопросы:

ответ
Вот обновленная версия на структурах, я её вроде выкладывал...
либо используйте CreateCreepOfType для создания крипов, так будет респаунить тока тех крипов которых вы создали этой функцией...

23

» WarCraft 3 / Апгрейды для отдельного юнита

Похожие вопросы:

ответ
какой вашу маковку редактор ии? вырубаете стандартный ии и правите игровые константы
ответ
Ну самый топорный метод - заведи всем поп еременной Bawn9[] и при покупке делай её true.
Если переменная[владелец покупающего юнита] = true - то удалить/отменить, вернуть деньги выдать ошибку

Ну или требование поставить для покупки - юнит, а при покупке - просто удаляй пехотинца игрока красного из игры, делая требования к покупке невыполненными
ответ
Мб сбил теги анимаций? Там все завязано на тегах, у одной башни чертова куча альтернейт анимаций, вероятно ты сбил порядок анимаций в контейнере.
ответ
Вам нужно также увеличить "Дистанцию получения приказа".